package aplicacion.vista;

import java.awt.image.BufferedImage;
import java.util.Hashtable;

import aplicacion.modelo.MovimientoAbajo;
import aplicacion.modelo.MovimientoArriba;
import aplicacion.modelo.MovimientoDerecha;
import aplicacion.modelo.MovimientoIzquierda;
import aplicacion.modelo.Pacman;
import aplicacion.modelo.SentidoDeMovimiento;
import titiritero.SuperficieDeDibujo;
import titiritero.vista.Imagen;

public class VistaPacman extends Imagen {
	private final static String IMAGEN_IZQ_PATH = "../recursos/pacIzquierda.jpg";
	private final static String IMAGEN_DER_PATH = "../recursos/pacDerecha.jpg";
	private final static String IMAGEN_ARRIBA_PATH = "../recursos/pacArriba.jpg";
	private final static String IMAGEN_ABAJO_PATH = "../recursos/pacAbajo.jpg";
	
	private final static int IMAGEN_IZQ = 0;
	private final static int IMAGEN_DER = 1;
	private final static int IMAGEN_ARRIBA = 2;
	private final static int IMAGEN_ABAJO = 3;
	
	private Pacman pacman;
	private Hashtable<Integer, BufferedImage> imagenes;
	
	public VistaPacman(Pacman pacman) {
		this.pacman = pacman;
		
		imagenes = new Hashtable<Integer, BufferedImage>();
		imagenes.put(IMAGEN_ARRIBA, decodificarImagen(IMAGEN_ARRIBA_PATH));
		imagenes.put(IMAGEN_ABAJO, decodificarImagen(IMAGEN_ABAJO_PATH));
		imagenes.put(IMAGEN_IZQ, decodificarImagen(IMAGEN_IZQ_PATH));
		imagenes.put(IMAGEN_DER, decodificarImagen(IMAGEN_DER_PATH));
	}
	
	@Override
	public void dibujar(SuperficieDeDibujo superficeDeDibujo) {
		SentidoDeMovimiento sentido = pacman.getSentidoDeMovimiento();
		
		if(sentido instanceof MovimientoAbajo)
			setImagen(imagenes.get(IMAGEN_ABAJO));
		else if(sentido instanceof MovimientoArriba)
			setImagen(imagenes.get(IMAGEN_ARRIBA));
		else if(sentido instanceof MovimientoDerecha)
			setImagen(imagenes.get(IMAGEN_DER));
		else if(sentido instanceof MovimientoIzquierda)
			setImagen(imagenes.get(IMAGEN_IZQ));
		
		super.dibujar(superficeDeDibujo);
	}
	
	public void setPacman(Pacman pacman) {
		this.pacman = pacman;
	}

	public Pacman getPacman() {
		return pacman;
	}
}
